package Day011_多线程1.demo03_高并发及线程安全.多线程运行机制;

/**
 * @author zhangyan
 * @date 2020/4/28 11:10
 */

/*
    高并发：是指在某个时间点上，有大量的用户(线程)同时访问同一资源。

    线程安全：在某个时间点上，当大量用户(线程)访问同一资源时，由于多线程运行机制的原因，可能会导致被
访问的资源出现"数据污染"的问题。

    当一个线程启动后，JVM会为其分配一个独立的"线程栈区"，这个线程会在这个独立的栈区中运行。
    线程执行完毕后会自动垃圾回收.

    多线程的问题:
            原子性：
                是指一个操作是不可中断的。即使是多个线程一起执行的时候，一个操作一旦开始，就不会被其他线程干扰。
                    比如，对于一个静态全局变量int i，两个线程同时对它赋值，线程A给他赋值为1，线程B给他赋值为-1。那么不管这两个线程以何种方式。
                    何种步调工作，i的值要么是1，要么是-1.线程A和线程B之间是没有干扰的。这就是原子性的一个特点，不可被中断。

            可见性：
                是指当一个线程修改了某一个共享变量的值，其他线程是否能够立即知道这个修改。
                显然，对于"串行"来说，可见性问题是不存在的。

            有序性：
                在并发时，程序的执行可能会出现乱序。给人的直观感觉就是：写在前面的代码，会在后面执行。有序性问题的原因是因为程序在执行时，
                可能会进行指令重排，重排后的指令与原指令的顺序未必一致。

                synchronized 能够实现代码的原子性（同步）
                volatile 保证变量的可见性，不能保证变量的符合操作原子性。

 */

public class Test {
    public static void main(String[] args) {

    }
}





